Often it is desired to improve the quality of an original image by utilizing various digital processing techniques. While there exist many software programs that allow a person to perform a wide variety of processing on a digital image, these programs require intensive personal input and often a high level of training to be used effectively. Consequently, there has been a parallel development of techniques that can automatically analyze a digital image and, without any human involvement, improve the image quality.
One particular problem that is commonly encountered is the presence of noise in a digital image. This noise can arise for a variety of reasons and includes both systematic or regular noise and random noise. A number of techniques have been devised to automatically remove noise from a digital image. One common technique is to simply apply some sort of low pass or averaging filter to the image. While this technique and similar techniques are effective in reducing or eliminating noise, simple filtering techniques suffer from the disadvantage that simple filtering also tends to blur the image, reducing its visual quality.
One conventional method for reducing or eliminating noise while avoiding the problem of blurring the image utilizes a sigma filter. The sigma filter works by replacing the value of a pixel with the average of those neighboring pixels that are relatively close to its value. This distance is usually taken to be related to the variance of the image, and hence the noise level. The sigma filter has the advantage of preserving high frequency detail in the image while removing noise.
However, the sigma filter has the disadvantage that the filter kernel needs to be relatively large for the filter to be effective. The large filter requires more extensive computing resources and time, thereby making the sigma filter less desirable.
Moreover, the noise within the image data needs to be detected/determined to enable proper sigma filtering wherein the sigma filtering enables noise removal.
Automatic noise removal requires the determination of the noise level in a given image. This detected noise level can be used to set parameters of a sigma filter that is applied to the image. Accurate determination of the noise level ensures that image noise is effectively attenuated, while allowing the image content to be virtually unaffected.
Conventionally, the noise is measured by calculating the sample standard deviation of a high pass filtered version of the image. The problem is that this estimate is highly contaminated by image content. A threshold could be used to ignore very large deviations, but the estimated sigma becomes very sensitive to this threshold.
Therefore, it would be desirable to implement a filtering process that realizes the advantages of a sigma filter, which is reducing or eliminating noise while avoiding the problem of blurring the image, but is more economical in the computing requirements needed to implement it.
Therefore, it would also be desirable to implement a noise level detection/determination process which is not highly contaminated by or sensitive to image content.